Color copying and printing is becoming commonplace in the office context. As is well known, color images have greater requirements than monochrome images, in the areas of image quality control, file size, bandwidth, etc. Therefore, there has been an incentive to discriminate among incoming images, such as those entering a digital copying or printing system through a digital scanner, to identify images as being either color or monochrome, so that each type of image is processed accordingly, and, specifically, resources such as memory and bandwidth for color images are not “wasted” in processing images which the human user is expecting to be monochrome. In another case, it may be desired to start with a full-color original image in the form of digital data (as would be found, for example, on a website) and print it out in monochrome; in such a case, a user would still like to obtain optimal possible image quality, without a quality loss resulting from rendering the original color image with a monochrome printer.
In designing a system, such as in the context of digital printing and copying, which is capable of discriminating between color and monochrome images, there has traditionally been two architectural strategies. First, there is a “two-pass” strategy, wherein the incoming image data (such as being recorded by the scanner of a digital copier) is sampled in a pre-scan to determine whether it is full-color or monochrome; following the determination, the image is re-scanned for suitable recording based on the determination. The two-pass approach clearly creates a speed problem in the context of digital scanning or copying. Another strategy includes recording the scanned image as two separate files, one full-color and the other monochrome. At the time of printing the image, the appropriate file is taken from memory. Such a strategy requires two sets of memory storage locations, since both files are created at the same time; further, any “middle function” operations common in digital printing, such as merging, rotation, n-up, etc., must be performed on both files and maintained in the memory.